package com.quan.demo.util;

/**
 * @Description: TODO
 * @author: Administrator
 * @date: 2020年07月06日 9:22
 */
public class StringUtilsP {
    /**
     * 版本号比较
     * 如果version1大于version2，返回值为1，等于为0，小于为-1
     * 例如：1.2.4和1.1.100比较大小，应是前者大于后者
     * split 方法入参为正则匹配表达式，不能用"."("."
     * 在正则表达式里匹配任何值)，需要用"\\."，才算是按点号分割
     */
    public static int compareVersion(String v1, String v2) throws Exception {

        if (v1 == null || v2 == null) {
            throw new Exception("bad version");
        }
        v1 = v1.trim();
        v2 = v2.trim();
        String[] arr1 = v1.split("\\.");//注意此处为正则匹配，不能用"."
        String[] arr2 = v2.split("\\.");
        int index = 0;
        int diff = 0;
        int minLen = Math.min(arr1.length, arr2.length);
        while (index < minLen
                && (diff = arr1[index].length() - arr2[index].length()) == 0//比较长度
                && (diff = arr1[index].compareTo(arr2[index])) == 0) {//比较字符
            index++;
        }
        //如果已经分出大小，则直接返回，如果未分出大小，则再比较位数，有子版本的为大；
        diff = (diff != 0) ? diff : arr1.length - arr2.length;
        return diff;
    }
}
